home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 2
/
Gekikoh Dennoh Club Vol. 2 (Japan).7z
/
Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin
/
games
/
px3
/
etc
/
prb_swap.bas
< prev
Wrap
BASIC Source File
|
1997-09-19
|
8KB
|
371 lines
/*====-----------------------------------------====
/*==== -: Picture Crosswords [ PX ] :- ====
/*==== モンダイ ファイル イチイレカエ プログラム ====
/*==== Programmed by MSY. ====
/*====-----------------------------------------====
int i,j,wk0,wk1,wk2,wk3
char ST1,BT1,ston,bton,stot,sttmf,sths
dim int mvof(23)={0,-1, 0, 1,-1,0, 1,-1, 0, 1 /* move table.(8way.)
,0, 1, 1, 1, 0,0, 0,-1,-1,-1}
char kyb
char cx,cy,cxn,cyn /* カーソル
int cx_,cy_ /* cx*32,cy*32
char nb0=&HFF,nb1=&HFF
dim char mprob(51199),nprob(51199)
dim int paltbl(799)
dim char tittbl(1599)
dim char nbtbl(99)
dim int iconp0(450),iconp1(450)
str stg_fl[21]
dim char PAL(31),PCG1(17663)
dim char wk9(127)
dim int gpal(15)={50788,44512,40284,36056,31828,27600,31710,25368,1984,65534}
/*-*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*-
if b_argc <= 1 then {
print "問題ファイルを指定してください。"
print "使用法:XB prb_swap filename"
stop
} else {
wk0=strrchr(b_argv(1),&H2E)
if wk0 = -1 then {
stg_fl=b_argv(1)+".DAT"
print stg_fl
} else {
stg_fl=b_argv(1)
print stg_fl
}
}
DATA_READ() /* ETC. data read
SCR_INIT() /* screen init.
SCR_MK1() /* screen make
/*---- -: Main Loop :- ----
cx=0 : cx_=0 : cy=0 : cy_=0
TCOS()
kb_cls()
ston=&HFF
sths=&HFF
bton=kstrig(1)
while 1
ST_INP()
if kyb = &H1B then break
/*++++ -: カーソル イドウ :- ++++
cxn=cx
cyn=cy
if ston = 0 then {
if ST1 <> 0 then {
if sths = ST1 then {
cx=cx+mvof(ST1)
cy=cy+mvof(ST1+10)
if cx = &HFF then cx=9
if cx = 10 then cx=0
if cy = &HFF then cy=9
if cy = 10 then cy=0
}
}
}
if cx <> cxn or cy <> cyn then {
cx_=cx shl 5
cy_=cy shl 5
TCOS() /* カーソル
}
/*++++ -: ボタン ガ オサレタ :- ++++
if bton = 0 and BT1 = 1 then {
/*---- -: イレカエ モト ケッテイ :- ----
if nb0 = &HFF then {
nb0=cy*10+cx
MES(472,128,itoa(nb0+1))
wk0=nb0 /10 : wk1=nb0-(wk0*10)
wk0=wk0 shl 5 : wk1=wk1 shl 5
box(wk1+24,wk0+24,wk1+55,wk0+55,gpal(8))
} else {
/*---- -: イレカエ サキ ケッテイ > イレカエ :- ----
nb1=cy*10+cx
ICON_SWAP()
nb0=&HFF
nb1=&HFF
fill(472, 96,495,119,gpal(3))
fill(472,124,495,147,gpal(3))
MES(472,100,itoa(cy*10+cx+1))
}
bton=BT1
}
/*---- -: イレカエ モト キャンセル :- ----
if bton = 0 and BT1 = 2 then {
wk0=nb0 /10 : wk1=nb0-(wk0*10)
wk0=wk0 shl 5 : wk1=wk1 shl 5
box(wk1+24,wk0+24,wk1+55,wk0+55,gpal(7))
nb0=&HFF
nb1=&HFF
fill(472, 96,495,119,gpal(3))
fill(472,124,495,147,gpal(3))
MES(472,100,itoa(cy*10+cx+1))
bton=BT1
}
/*++++ -: スティック ノ ニュウリョク アトショリ :- ++++
ST_CK2(16,2)
/*++++ -: ボタン ノ ニュウリョク アトショリ :- ++++
if bton <> BT1 then bton=0
v_disp()
endwhile
DATA_SAVE()
tcls()
end
/*==== -: カーソル イドウ :- ====
/*====-----------------====
func TCOS()
int i,n0
tfill( 24, 24,343,343, 0)
tline(cx_+24,cy_+24,cx_+24,cy_+55,15)
tline(cx_+55,cy_+24,cx_+55,cy_+55,15)
tline(cx_+24,cy_+24,cx_+55,cy_+24,15)
tline(cx_+24,cy_+55,cx_+55,cy_+55,15)
/*---- -: モンダイ タイトル :- ----
n0=nbtbl(cy*10+cx) shl 4
for i=0 to 11
TFP2(360+i*12, 28,tittbl(n0+i))
next
/*---- -: モンダイ サイズ :- ----
fill(440, 60,455, 75,gpal(3))
MES(440, 60,itoa(tittbl(n0+14)))
fill(480, 60,495, 75,gpal(3))
MES(480, 60,itoa(tittbl(n0+15)))
if nb0 = &HFF then {
fill(472, 96,495,119,gpal(3))
MES(472,100,itoa(cy*10+cx+1))
} else {
fill(472,124,495,147,gpal(3))
MES(472,128,itoa(cy*10+cx+1))
}
endfunc
/*==== -: Icon Sawp :- ====
/*====-----------------====
func ICON_SWAP()
int x0,y0,x1,y1,nbf
y0=nb0 / 10 : x0=nb0-(y0*10)
y1=nb1 / 10 : x1=nb1-(y1*10)
x0=x0 shl 5 : y0=y0 shl 5
x1=x1 shl 5 : y1=y1 shl 5
/*---- -: アイコン イレカエ :- ----
get(x0+25,y0+25,x0+54,y0+54,iconp0)
get(x1+25,y1+25,x1+54,y1+54,iconp1)
put(x0+25,y0+25,x0+54,y0+54,iconp1)
put(x1+25,y1+25,x1+54,y1+54,iconp0)
box(x0+24,y0+24,x0+55,y0+55,gpal(7))
x0=nbtbl(nb0) : x1=nbtbl(nb1)
nbtbl(nb0)=x1 : nbtbl(nb1)=x0
/*---- -: モンダイ タイトル :- ----
nbf=nbtbl(cy*10+cx) shl 4
for i=0 to 11
TFP2(360+i*12, 28,tittbl(nbf+i))
next
/*---- -: モンダイ サイズ :- ----
fill(440, 60,455, 75,gpal(3))
MES(440, 60,itoa(tittbl(nbf+14)))
fill(480, 60,495, 75,gpal(3))
MES(480, 60,itoa(tittbl(nbf+15)))
endfunc
/*==== -: Screen Make :- ====
/*====-------------------====
func SCR_MK1()
int i,j,pc0,pc1,x,y
sp_palet(0,PAL,0)
sp_out()
fill( 0, 0,511,511,gpal(1))
fill(352, 8,503, 47,gpal(3))
fill(352, 56,503, 79,gpal(3))
fill(352, 96,503,119,gpal(3))
fill(352,124,503,147,gpal(3))
MES(360, 12,"タイトル")
MES(360, 60,"サイズ X: Y: ")
MES(360,100,"いれかえもと:")
MES(360,128,"いれかえさき:")
/*---- -: palet :- ----
for i=0 to 99
nbtbl(i)=i
for j=0 to 7
pc0=mprob((i shl 9)+ 18+(j shl 1))
pc1=mprob((i shl 9)+ 19+(j shl 1))
paltbl((i shl 3)+j)=(pc0 shl 8)+pc1
next
next
/*---- -: problem icon :- ----
for i=0 to 9
MES( 4, 32+(i shl 5),itoa(i*10))
MES( 32+(i shl 5), 4,itoa(i+1))
y=(i shl 5)+24
for j=0 to 9
x=(j shl 5)+24
PICON(i*10+j,x,y)
box(x,y,x+31,y+31,gpal(7))
next
next
/*---- -: problem title :- ----
for i=0 to 99
for j=0 to 15
tittbl((i shl 4)+j)=mprob((i shl 9)+ 2+j)
next
/*---- -: problem size :- ----
tittbl((i shl 4)+14)=mprob((i shl 9)+ 0)
tittbl((i shl 4)+15)=mprob((i shl 9)+ 1)
next
endfunc
func PICON(nb;char,x;int,y;int)
int i,j,pl,p0,p1
for i=0 to 29
for j=0 to 14
pl=mprob((nb shl 9)+ 62+i*15+j)
p0=pl shr 5 : p0=paltbl((nb shl 3)+p0)
p1=(pl and 15) shr 1 : p1=paltbl((nb shl 3)+p1)
iconp0(i*15+j)=(p0 shl 16)+p1
next
next
put(x+1,y+1,x+30,y+30,iconp0)
endfunc
/*[S]= -: key borad buffer clear :- ====
/*====------------------------------====
func kb_cls()
while 1
if inkey$(0) = "" then break
endwhile
endfunc
/*[S]= -: Key Board & Stick & Mouse Input Check :- ====
/*====---------------------------------------------====
func ST_INP()
ST1=k8stick(1)
BT1=kstrig(1)
kyb=asc(inkey$(0))
endfunc
/*[S]= -: スティック ノ ニュウリョク アトショリ :- ====
/*====----------------------------====
func ST_CK2(fl0;char,fl1;char)
if sths <> ST1 then {
ston=0
stot=0
sttmf=0
} else {
ston=1
}
if ston <> 0 and sths = ST1 then {
stot=stot+1
if sttmf = 0 then {
if stot = fl0 then {
ston=0
stot=0
sttmf=1
}
} else {
if stot = fl1 then {
ston=0
stot=0
}
}
}
sths=ST1
endfunc
/*[S]= -: Text Font Put(8x16) :- ====
/*====---------------------------====
func TFP2(x;int,y;int,cd;int)
wk0=cd shr 1
wk1=cd and 1
sp_pcg(&H3F,PCG1,wk0) /* フォント パターン ヨウイ
sp_out()
sp_pat(&HFC+(wk1 shl 1),wk9,0) /* フォント プット
tput(x,y,8,8,wk9,"pset")
sp_pat(&HFD+(wk1 shl 1),wk9,0)
tput(x,y+8,8,8,wk9,"pset")
endfunc
func MES(x;int,y;int,m;str)
symbol(x,y,m,1,1,1,gpal(7),0)
symbol(x+1,y,m,1,1,1,gpal(9),0)
endfunc
/*[I]= -: Screen Initialize :- ====
/*====-------------------------====
func SCR_INIT()
screen 1,3,1,1
/* iocs(&H10,&H3C):iocs(&H90)
console ,,0
v_priority("STG","01") /* プライオリティ (SP>TX>GR)
v_special(0) /* ハントウメイ off
window( 0, 0,511,511)
home(0, 0, 0)
vpage(1)
apage(0)
tcls()
thome( 0, 0)
tfill( 0, 0,511,511, 0)
/* sp_init()
sp_disp(0)
mouse(0)
mouse(4)
endfunc
/*[I]= -: Data Read :- ====
/*====-----------------====
func DATA_READ()
wk0=fopen("PX .PAL","r")
fread(PAL,32,wk0)
fclose(wk0)
wk0=fopen("PX .OBJ","r")
fseek(wk0,19456,0)
fread(PCG1,17664,wk0)
fclose(wk0)
wk0=fopen(stg_fl,"r")
fread(mprob,51200,wk0)
fclose(wk0)
endfunc
/*[I]= -: Data Save :- ====
/*====-----------------====
func DATA_SAVE()
fill( 0,472,511,511,gpal(3))
MES( 0,476,"データセーブしますか? (Y/N)")
while 1
ST_INP()
if kyb = 'Y' or kyb = 'y' or kyb = 'N' or kyb = 'n' then break
endwhile
if kyb = 'N' or kyb = 'n' then return()
MES( 0,492,"ただいまデータセーブちゅう! NO.:")
for i=0 to 99
MES(264,492,itoa(i+1))
for j=0 to 511
nprob((i shl 9)+j)=mprob((nbtbl(i) shl 9)+j)
next
fill(264,492,287,507,gpal(3))
next
wk0=fopen(stg_fl,"c")
fwrite(nprob,51200,wk0)
fclose(wk0)
endfunc